using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
namespace Entidades
{
    public class Provincia
    {
        private const string __ErrorAlta = "No se pudo dar el alta (Provincia), ";
        private const string __ErrorBaja = "No se pudo dar la baja (Provincia), ";
        private const string __ErrorModificacion = "No se pudo hacer la modificacion (Provincia), ";
        private const string __ErrorTraerUno = "No se pudo Traer Uno (Provincia), ";
        private const string __ErrorTraerTodos = "No se pudo Traer Todos (Provincia), ";
        private Int32 _Id;

        private string _provincia;
        #region "Propiedades"
        public Int32 Id
        {
            get { return _Id; }
            set { _Id = value; }
        }
        public string provincia
        {
            get { return _provincia; }
            set { _provincia = value; }
        }
        #endregion
        #region "Lazys"
        private List<Partido> _Partidos;
        public List<Partido> Partidos
        {
            get
            {
                if (_Partidos == null)
                {
                    _Partidos = Partido.getAllByIdProvincia(_Id);
                }
                return _Partidos;
            }
        }
        
        #endregion
        public Provincia()
        {
        }
        public Provincia(Int32 Id)
        {
            Provincia provincia = traerUno(Id);
            this._Id = provincia.Id;
            this._provincia = provincia.provincia;
        }
        #region "Metodos Publicos"
        public void Alta()
        {
            try
            {
                validaAlta();
                DALProvincia.Alta(this);
            }
            catch (Exception ex)
            {
                throw new Exception(__ErrorAlta + ex.Message);
            }
        }
        public void Baja()
        {
            try
            {
                validaBaja();
                DALProvincia.Baja(_Id);
            }
            catch (Exception ex)
            {
                throw new Exception(__ErrorBaja + ex.Message);
            }
        }
        public void Modificar()
        {
            try
            {
                validaModificacion();
                DALProvincia.Modificar(this);
            }
            catch (Exception ex)
            {
                throw new Exception(__ErrorModificacion + ex.Message);
            }
        }
        #region "Metodos Estaticos"
        private Provincia traerUno(int Id)
        {
            try
            {
                return DALProvincia.traerUno(Id);
            }
            catch (Exception ex)
            {
                throw new Exception(__ErrorTraerUno + ex.Message);
            }
        }
        public static List<Provincia> TraerTodos()
        {
            try
            {
                return DALProvincia.TraerTodos();
            }
            catch (Exception ex)
            {
                throw new Exception(__ErrorTraerTodos + ex.Message);
            }
        }
        #region "Lazys"
        #endregion
        #endregion
        #endregion
        #region "Metodos Privados"
        private void validaAlta()
        {
            //lanza excepcion si no valida
            //ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
            throw new NotImplementedException();
        }
        private void validaBaja()
        {
            //lanza excepcion si no valida
            throw new NotImplementedException();
        }
        private void validaModificacion()
        {
            //lanza excepcion si no valida
            //ej If _Descripcion = " Then Throw New Exception("la descripcion no debe estar vacia")
            throw new NotImplementedException();
        }
        #endregion
    }
}